import { decrypt, encrypt } from "./authRequest"

const TokenKey = 'uniapp_App_Token'
const TokenKeyUser = 'uniapp_App_Token_userAuth'

/**
 * 获取存储的 Token
 * @returns {string|null} 返回存储的 Token，未找到则返回 null
 */
export function getToken() {
	return uni.getStorageSync(TokenKey)
}

/**
 * 设置 Token 到本地存储
 * @param {string} token 要设置的 Token
 * @returns {void}
 */
export function setToken(token) {
	return uni.setStorageSync(TokenKey, token)
}

/**
 * 从本地存储中移除 Token
 * @returns {void}
 */
export function removeToken() {
	return uni.removeStorageSync(TokenKey)
}

const TOKEN_EXPIRY_TIME = 24 * 60 * 60 * 1000;
/**
 * 获取存储的用户 Token
 * @returns {string|null} 返回存储的用户 Token，未找到或过期则返回 null
 */
export function getUserTokenInfo() {
	const jsonData = uni.getStorageSync(TokenKeyUser);

	if (jsonData) {
		const data = JSON.parse(decrypt(jsonData));

		if (data) {
			const { token, timestamp } = data;
			if (Date.now() - timestamp < TOKEN_EXPIRY_TIME) {
				return token; // 未过期，返回 Token
			}
		}
	}

	return null; // 未找到或已过期
}

/**
 * 设置用户 Token 到本地存储
 * @param {string} token 要设置的用户 Token
 * @returns {void}
 */
export function setUserTokenInfo(token) {
	const data = {
		token,
		timestamp: Date.now() // 存储当前时间戳
	};

	const jsonData = JSON.stringify(data);

	return uni.setStorageSync(TokenKeyUser, encrypt(jsonData));
}

/**
 * 从本地存储中移除用户 Token
 * @returns {void}
 */
export function removeUserTokenInfo() {
	
	return uni.removeStorageSync(TokenKeyUser);
	
}
/**
 * 获取指定页面的 Token
 * @param {string} PagesTokenKey 页面 Token 的键
 * @returns {string|null} 返回存储的页面 Token，未找到则返回 null
 */
export function getPagesToken(PagesTokenKey) {
	return uni.getStorageSync(PagesTokenKey)
}

/**
 * 设置指定页面的 Token 到本地存储
 * @param {string} PagesTokenKey 页面 Token 的键
 * @param {string} PagesToken 要设置的页面 Token
 * @returns {void}
 */
export function setPagesToken(PagesTokenKey, PagesToken) {
	return uni.setStorageSync(PagesTokenKey, PagesToken)
}

/**
 * 从本地存储中移除指定页面的 Token
 * @param {string} PagesTokenKey 页面 Token 的键
 * @returns {void}
 */
export function removePagesToken(PagesTokenKey) {
	return uni.removeStorageSync(PagesTokenKey)
}